def pca(data, n):
data = np.array(data)
# 均值
mean_vector = np.mean(data, axis=0)
# 协方差
cov_mat = np.cov(data - mean_vector, rowvar=0)
# 特征值 特征向量
fvalue, fvector = np.linalg.eig(cov_mat)
# 排序
fvaluesort = np.argsort(-fvalue)
# 取前几大的序号
fValueTopN = fvaluesort[:n]
# 保留前几大的数值
newdata = fvector[:, fValueTopN]
new = np.dot(data, newdata)
return new